#ifndef __MOTOR_CONFIG_H
#define __MOTOR_CONFIG_H

#include "stdint.h"

typedef struct {
    volatile uint16_t degree_;        // 机械角度
    volatile int16_t  speed_;         // 速度
    volatile int16_t  current_;       // 电流
    volatile uint8_t  temprature_;    // 温度
    volatile int16_t  expect_speed_;  // 期望速度
    volatile int16_t  set_current_;   // 控制电流
    int32_t           max_current_;   // 最大电流
} m3508_t;

typedef struct {
    volatile uint16_t degree_;         // 机械角度
    volatile uint16_t expect_degree_;  // 期望机械角度
    volatile int16_t  speed_;          // 转速
    volatile float    expect_speed_;   // 期望速度
    volatile int16_t  current_;        // 实际转矩电流
    volatile int16_t  set_current_;    // 控制电流
    volatile uint8_t  temprature_;     // 温度
} gm6020_t;

typedef struct m2006 {
    uint16_t degree_;        // 机械角度
    int16_t  speed_;         // 转速
    int16_t  expect_speed_;  // 期望速度
    int16_t  torque_;        // 转矩
    int16_t  set_voltage_;   // 控制电压
} m2006_t;

typedef int32_t servo_degree_t;

typedef struct {
    volatile servo_degree_t degree_;         // 机械角度
    volatile servo_degree_t expect_degree_;  // 期望机械角度
    volatile int16_t        speed_;          // 转速
    volatile int16_t        expect_speed_;   // 期望速度
    volatile int16_t        current_;        // 实际转矩电流
    volatile int16_t        set_current_;    // 控制电流
} servo_motor_t;

#endif
